# pymysql 三方库连接数据库
import pymysql
import traceback #可以将报错信息打印在控制台上面
# 创建连接对象
"""
连接数据库都需要准备哪些内容？
账号:root
密码:password
ip:xxx.xxx.xxx.xxx
端口号:3306
数据库对象:连接到哪个数据库
"""

db = pymysql.connect(user='root',password='123456',host='114.215.252.110',database='jqd',cursorclass =
pymysql.cursors.DictCursor)

"""
user:数据库的账号
password:数据库密码
host:ip地址
database:你要连接哪个数据库
cursorclass:设定返回的对象是字典
"""
# 通过db对象创建游标
"""
用游标进行增删改查的sql执行
"""
cursor = db.cursor()
# 查询数据库的内容
cursor.execute('select * from person')
# 根据sql的条件,找到符合一条的数据
result = cursor.fetchone()
print(result)
# 根据sql的条件,找到符合所有的数据
result = cursor.fetchall()
print(result)
for line in result:
    print(line)



# 当你不需要使用数据库的时候,要关闭
# 新增
"""
当你对数据库做了真实的改变,就需要数据库对象提交
新增、删除、修改
查询不算
"""
# cursor.execute("insert into person(name,age,address,ssn) values('张三','12','黑山','1234567890098')")
# db.commit() #需要用数据库对象提交

# 再去查询看看
# cursor.execute("select * from person")
# print(cursor.fetchall())

# 删除
# cursor.execute(("delete from person where name='张三'"))
# db.commit()

# 修改
# cursor.execute("updata person set name='王五' where name='张三'")
# db.commit()
# 再去查询看看
# cursor.execute("select * from person")
# print(cursor.fetchall())


"""
关闭顺序
先关闭游标
再关闭数据库对象
"""
# cursor.close()
# db.close()

class DB:
    def __init__(self,user,password,host,database):
        self.user = user
        self.password = password
        self.host = host
        self.database = database
    def connect(self):
        # 创建数据库对象
        self.db = pymysql.connect(user = self.user,password= self.password,host=self.host,database=self.database,cursorclass =
        pymysql.cursors.DictCursor)
        # 通过数据库对象创建游标
        self.cursor = self.db.cursor()
    def close(self):
        self.cursor.close()
        self.db.close()
    def search(self,type:int,sql):
        """
        :param type: 1 找到符合一条的数据 2 找到符合的全部数据
        :param sql:
        :return:
        """
        # 先去调用连接数据库的方法
        self.connect()


